package service

import (
	"blog/service/club_service"
	"blog/utils"
	"fmt"
	"github.com/xuri/excelize/v2"
	"strings"
	"time"
)

// 学习了解go读写Excel操作 https://zhuanlan.zhihu.com/p/33417413

// HelloExcel 写入数据创建Excel文件
func HelloExcel() {
	//tableName := "tag"
	club_service.ShowEsData()
}

func hellokk(fullFilePath string) {
	// 处理文件名信息,过滤掉目录,拿到文件名 文件名作为 mysql 表名
	filesPath := strings.Split(fullFilePath, "/")

	filesName := strings.Split(filesPath[len(filesPath)-1], ".")

	fmt.Println(filesName)
	// 文件名 也就是写入MySQL的表名
	if filesName[1] != "csv" {
		fmt.Println("不是csv文件,跳过操作", filesName)
		return
	}
	fmt.Println("开始操作")
}

// ----------------------------------------------- 查看MySQL的元数据信息 ---------------------------------------------
// SHOW CREATE TABLE linkinframe.user; 获取对应的 ddl信息
// desc xzaims.system_page ; 查看表结构信息

func ShowMYsqlTable() {
	conDb := utils.GetLocalMysql(utils.Xzaims)
	rawSql := "desc xzaims.system_page"
	rawSql = "SHOW CREATE TABLE linkinframe.user;"
	rawSql = "desc xzaims.system_page;"
	result, _ := conDb.Debug().Raw(rawSql).Rows()
	fmt.Println(result)
	//conDb.QuoteTo()
}

// ----------------------------------------------- 读取现有Excel文档 ---------------------------------------------

// ReadExcel 读取现有Excel文档 2025年7月20日读取成功
func ReadExcel() {
	f, err := excelize.OpenFile("static/code.xlsx")
	if err != nil {
		println(err.Error())
		return
	}
	// 获取工作表中指定单元格的值
	cell, err := f.GetCellValue("Sheet1", "B2")
	if err != nil {
		println(err.Error())
		return
	}
	println(cell)
	// 获取 Sheet1 上所有单元格
	rows, err := f.GetRows("Sheet1")
	for _, row := range rows {
		for _, colCell := range row {
			print(colCell, "\t")
		}
		println()
	}
}

// ReadExcelAndShow 测试读取Excel文档
func ReadExcelAndShow() {
	f, err := excelize.OpenFile("static/code.xlsx")
	if err != nil {
		println(err.Error())
		return
	}
	// 获取 Sheet1 上所有单元格
	rows, err := f.GetRows("Sheet1")
	//读取 表头 currency_ower	currency_name	currency_code 匹配信息
	type Currency struct {
		CurrencyOwer string
		CurrencyName string
		CurrencyCode string
	}
	currencyList := make([]Currency, 0)
	for i, row := range rows {
		fmt.Println(row)
		if i == 0 {
			continue
		}
		currencyList = append(currencyList, Currency{
			CurrencyOwer: strings.TrimSpace(row[0]),
			CurrencyName: strings.TrimSpace(row[1]),
			CurrencyCode: strings.TrimSpace(row[2]),
		})
	}
	fmt.Println(currencyList)
	for _, currency := range currencyList {
		fmt.Println(currency)
	}
}

// ReadExcelDate 读取日期
func ReadExcelDate() {
	f, err := excelize.OpenFile("static/aa.xlsx")
	if err != nil {
		println(err.Error())
		return
	}
	// 获取 Sheet1 上所有单元格
	rows, err := f.GetRows("Sheet1")
	type DateInfo struct {
		Date     string
		DateType string
		Status   string
	}
	dateInfoList := make([]DateInfo, 0)
	for i, row := range rows {
		fmt.Println(row)
		if i == 0 || row[0] == "" {
			fmt.Println("跳过表头或者为空的数据", row)
			continue
		}
		date := strings.TrimSpace(row[0])
		// 尝试解析DD-MM-YY格式
		if parsedDate, err := time.Parse("02-01-06", date); err == nil {
			date = parsedDate.Format("2006-01-02")
		} else if _, err := time.Parse("2006-01-02", date); err != nil {
			fmt.Printf("日期格式错误: %s\n", date)
			continue
		}
		dateInfoList = append(dateInfoList, DateInfo{
			Date:     date,
			DateType: strings.TrimSpace(row[1]),
			Status:   strings.TrimSpace(row[2]),
		})
	}
	fmt.Println(dateInfoList)
}
